CROSS_COMPILE ?=arm-linux-gnueabihf-
CC = $(CROSS_COMPILE)gcc
AR = $(CROSS_COMPILE)ar
STRIP = $(CROSS_COMPILE)strip
BUILD_DIR := .build
LIB_NAME=cam_os_wrapper
BRANCH_ID := $(shell git rev-parse --abbrev-ref HEAD 2> /dev/null | sed -e 's/\//_/g')
GIT_COMMIT_INFO:="Sigmastar Module version: kernel_commit.$(shell git log -n 1 --format="%h") build_time.$(shell date +%Y%m%d%H%M%S)"

LINUX_KERNEL_PATH ?= $(PWD)/../../../
KL_API_INCLUDE ?= $(LINUX_KERNEL_PATH)/drivers/sstar/include

CFLAGS := -Wall -Werror -Wno-sync-nand -O2 -ffunction-sections -funwind-tables -fstack-protector
CFLAGS += -fPIC -DPIC

CFLAGS += -DCAM_OS_LINUX_USER

#CFLAGS += -D__USE_GNU
LDFLAGS += -O2 -Bdirect -Wl,--hash-style=gnu
LIBS := -ldl -lpthread

CORE_LIB_C_SRCS := \
    ./src/cam_os_wrapper.c \
    ./src/cam_os_informal_idr.c

CINCLUDES := \
    -I$(KL_API_INCLUDE) \
    -I./pub \
    -I./inc

LIB_HEADERS := \
    ./pub/cam_os_wrapper.h \
    ./pub/cam_os_util.h \
    ./pub/cam_os_util_list.h \
    ./pub/cam_os_util_hash.h \
    ./pub/cam_os_util_bitmap.h \
    ./pub/cam_os_util_bug.h \
    ./pub/cam_os_util_ioctl.h \
    ./pub/cam_os_util_string.h \
    ./pub/cam_os_struct.h

CORE_LIB_C_OBJS := $(patsubst %.c, %.c.o,  $(CORE_LIB_C_SRCS))

.PHONY: clean prepare lib$(LIB_NAME)

all: prepare lib$(LIB_NAME)

prepare:
	@echo
	@echo ">>>>========================================================"
	@echo
	@echo "  LIB_NAME = ${LIB_NAME}"
	@echo "  PWD = $(shell pwd)"
	@echo "  CC = $(CC)"
	@echo "  BRANCH_ID = $(BRANCH_ID)"
	@echo "  GIT_COMMIT_INFO = $(GIT_COMMIT_INFO)"
	@echo
	@mkdir -p $(BUILD_DIR)
	@echo "  Copying headers to '$(BUILD_DIR)/include'..."
	@echo
	@mkdir -p $(BUILD_DIR)/include
	@cp -f $(LIB_HEADERS) $(BUILD_DIR)/include

clean:
	@rm -Rf $(CORE_LIB_C_OBJS)
	@rm -Rf $(BUILD_DIR)

lib$(LIB_NAME):	prepare $(CORE_LIB_C_OBJS)
	@mkdir -p $(BUILD_DIR)/lib
	@echo "  LD      $(BUILD_DIR)/lib/$@.so"
	@$(CC) -shared $(LDFLAGS) -o $(BUILD_DIR)/lib/$@.so $(CORE_LIB_C_OBJS) ${LIBS}
	@echo "  AR      $(BUILD_DIR)/lib/$@.a"
	@$(AR) -crs $(BUILD_DIR)/lib/$@.a $(CORE_LIB_C_OBJS)
	@echo
	@echo "<<<<========================================================"
	@echo

%.c.o : %.c
	@mkdir -p $(dir $@)
	@echo "  CC      $<"
#	@echo $(CFLAGS) $(CINCLUDES)  -c $< -o $@
	@$(CC) $(CFLAGS) $(CINCLUDES)  -c $< -o $@ -DSIGMASTAR_MODULE_VERSION=$(GIT_COMMIT_INFO)
